home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1990-09-29 | 12.5 KB | 353 lines |
- 10 REM - This is SCALES
- 20 CLS: KEY OFF: COLOR 0,7,0
- 30 PRINT " Musical Scales "
- 40 REM - By Robert Braunwart
- 50 COLOR 7,0,0
- 60 DEF SEG = &H40 : POKE &H17, PEEK (&H17) AND 139
- 70 DIM I(15): DIM R$(15): DIM A(15)
- 80 PRINT: PRINT
- 90 PRINT "SEVENTEEN SCALE TYPES -- Major, Minor, Modal, Whole Tone and Pentatonic"
- 100 PRINT
- 110 PRINT "This program prints in letter names one octave upward, the major, the"
- 120 PRINT "natural, harmonic, melodic, and Hungarian minors, the Dorian, Phrygian,"
- 130 PRINT "Lydian, Mixolydian, and Locrian modes, and the whole tone, chromatic and"
- 140 PRINT "pentatonic scales.": PRINT
- 150 PRINT "Use a 3- or 4-character input: the first 2 characters are the scale type,"
- 160 PRINT "and the 3rd character is the single letter tonic, or the last two char-"
- 170 PRINT "acters are the tonic degree or the key signature (for diatonic scales)."
- 180 PRINT
- 190 PRINT "SCALE TYPES -- ma na ha me do ph ly mi lo hu wh ch p1 p2 p3 p4 p5": PRINT
- 200 PRINT "EXAMPLES: madb lyfb mieb phgb huf# hag# mea# whc# chc p3d lo0 do3# na6b"
- 210 A$="C C#D D#E F F#G G#A A#B C C#D D#E F F#G G#A A#B "
- 220 B$="B#C#D D#E E#F#G G#A A#B B#C#D D#E E#F#G G#A A#B "
- 230 C$="B#BxCxD#DxE#ExFxG#GxA#AxB#BxCxD#DxE#ExFxG#GxA#Ax"
- 240 D$="B#C#CxD#DxE#F#FxG#GxA#AxB#C#CxD#DxE#F#FxG#GxA#Ax"
- 250 E$="B#C#CxD#E E#F#FxG#A A#B B#C#CxD#E E#F#FxG#A A#B "
- 260 F$="C C#CxD#E E#F#FxG#GxA#B C C#CxD#E E#F#FxG#GxA#B "
- 270 G$="C DbD EbE F GbG AbA BbB C DbD EbE F GbG AbA BbB "
- 280 H$="C DbD EbFbF GbG AbA BbCbC DbD EbFbF GbG AbA BbCb"
- 290 I$="DdDbEdFdFbGdGbAdAbBdCdCbDdDbEdFdFbGdGbAdAbBdCdCb"
- 300 J$="C DbEdEbFbF GbG AbBdBbCbC DbEdEbFbF GbG AbBdBbCb"
- 310 K$="DdDbEdEbFbF GbAdAbBdBbCbDdDbEdEbFbF GbAdAbBdBbCb"
- 320 L$="C C#D EbE F F#G G#A BbB C C#D EbE F F#G G#A BbB "
- 330 M$="C C#D EbE F F#G AbA BbB C C#D EbE F F#G AbA BbB "
- 340 GOTO 360
- 350 PRINT: PRINT "No such scale."
- 360 PRINT: PRINT: PRINT TAB(8);"Which type of scale is wanted ('x' to end)";
- 370 INPUT N$
- 380 IF N$="" THEN PRINT: GOTO 190
- 390 IF N$="x" THEN 3510
- 400 O$="manahamedophlymilohuwhchp1p2p3p4p5"
- 410 FOR X=1 TO 34 STEP 2
- 420 IF LEFT$(N$,2)=MID$(O$,X,2) THEN 440
- 430 NEXT X
- 440 Q=(X+1)/2
- 450 IF ASC(MID$(N$,3,1))>96 THEN P$=CHR$(ASC(MID$(N$,3,1))-32): GOTO 470
- 460 P$=MID$(N$,3,1)
- 470 IF P$="H" THEN P$="B"
- 480 IF ASC(P$)>73 GOTO 350
- 490 Q$=MID$(N$,4,1)
- 500 IF Q$="" THEN Q$=" "
- 510 R$(1)=P$+Q$: GOTO 570
- 520 FOR X=1 TO 150 STEP 2
- 530 IF R$(1)=MID$(A$,X,2) THEN 550
- 540 NEXT X
- 550 R=X
- 560 RETURN
- 570 N=7: PRINT
- 580 ON Q GOTO 590, 840, 1100, 1230, 1360, 1620, 1870, 2110, 2370, 2610, 2770, 2830, 2900, 2960, 3020, 3080, 3140, 350
- 590 IF R$(1)="0 " THEN R$(1)="C ":
- 600 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="G "
- 610 IF R$(1)="2#" THEN R$(1)="D "
- 620 IF R$(1)="3#" THEN R$(1)="A "
- 630 IF R$(1)="4#" THEN R$(1)="E "
- 640 IF R$(1)="5#" THEN R$(1)="B "
- 650 IF R$(1)="6#" THEN R$(1)="F#"
- 660 IF R$(1)="7#" THEN R$(1)="C#"
- 670 IF R$(1)="1b" THEN R$(1)="F "
- 680 IF R$(1)="2b" THEN R$(1)="Bb"
- 690 IF R$(1)="3b" THEN R$(1)="Eb"
- 700 IF R$(1)="4b" THEN R$(1)="Ab"
- 710 IF R$(1)="5b" THEN R$(1)="Db"
- 720 IF R$(1)="6b" THEN R$(1)="Gb"
- 730 IF R$(1)="7b" THEN R$(1)="Cb"
- 740 PRINT: PRINT "Major (Ionian) Scale on ";R$(1)
- 750 IF R$(1)="G#" THEN A$=D$: GOTO 810
- 760 IF R$(1)="C#" OR R$(1)="F#" THEN A$=B$: GOTO 810
- 770 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 810
- 780 IF R$(1)="Gb" OR R$(1)="Cb" THEN A$=H$: GOTO 810
- 790 IF R$(1)="Fb" THEN A$=J$: GOTO 810
- 800 IF R$(1)="F " OR Q$="b" THEN A$=G$
- 810 GOSUB 520
- 820 I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
- 830 GOTO 3190
- 840 IF R$(1)="0 " THEN R$(1)="A ":
- 850 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="E "
- 860 IF R$(1)="2#" THEN R$(1)="B "
- 870 IF R$(1)="3#" THEN R$(1)="F#"
- 880 IF R$(1)="4#" THEN R$(1)="C#"
- 890 IF R$(1)="5#" THEN R$(1)="G#"
- 900 IF R$(1)="6#" THEN R$(1)="D#"
- 910 IF R$(1)="7#" THEN R$(1)="A#"
- 920 IF R$(1)="1b" THEN R$(1)="D "
- 930 IF R$(1)="2b" THEN R$(1)="G "
- 940 IF R$(1)="3b" THEN R$(1)="C "
- 950 IF R$(1)="4b" THEN R$(1)="F "
- 960 IF R$(1)="5b" THEN R$(1)="Bb"
- 970 IF R$(1)="6b" THEN R$(1)="Eb"
- 980 IF R$(1)="7b" THEN R$(1)="Ab"
- 990 PRINT: PRINT "Natural Minor (Aeolian) Scale on ";R$(1)
- 1000 IF R$(1)="E#" THEN A$=D$: GOTO 1070
- 1010 IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" THEN A$=B$: GOTO 1070
- 1020 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1070
- 1030 IF R$(1)="Cb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1070
- 1040 IF R$(1)="Ab" OR R$(1)="Eb" OR R$(1)="G " THEN A$=H$: GOTO 1070
- 1050 IF R$(1)="Db" THEN A$=J$: GOTO 1070
- 1060 IF R$(1)="C " OR R$(1)="D " OR R$(1)="Fb" OR R$(1)="F " OR Q$="b" THEN A$=G$
- 1070 GOSUB 520
- 1080 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
- 1090 GOTO 3190
- 1100 PRINT: PRINT "Harmonic Minor Scale on ";R$(1)
- 1110 IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 1200
- 1120 IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 1200
- 1130 IF R$(1)="B#" THEN A$=C$: GOTO 1200
- 1140 IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 1200
- 1150 IF Q$="#" THEN A$=B$: GOTO 1200
- 1160 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 1200
- 1170 IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 1200
- 1180 IF Q$="b" THEN A$=H$: GOTO 1200
- 1190 IF R$(1)="C " OR R$(1)="F " THEN A$=G$
- 1200 GOSUB 520
- 1210 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=11: I(7)=12
- 1220 GOTO 3190
- 1230 PRINT: PRINT "Melodic Minor Scale on ";R$(1)
- 1240 IF R$(1)="G " THEN A$=L$: GOTO 1330
- 1250 IF R$(1)="A#" OR R$(1)="D#" THEN A$=D$: GOTO 1330
- 1260 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1330
- 1270 IF R$(1)="G#" THEN A$=F$: GOTO 1330
- 1280 IF Q$="#" THEN A$=B$: GOTO 1330
- 1290 IF R$(1)="Cb" THEN A$=J$: GOTO 1330
- 1300 IF R$(1)="Fb" OR R$(1)="Gb" THEN A$=K$: GOTO 1330
- 1310 IF Q$="b" THEN A$=H$: GOTO 1330
- 1320 IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
- 1330 GOSUB 520
- 1340 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
- 1350 GOTO 3190
- 1360 IF R$(1)="0 " THEN R$(1)="D ":
- 1370 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="A "
- 1380 IF R$(1)="2#" THEN R$(1)="E "
- 1390 IF R$(1)="3#" THEN R$(1)="B "
- 1400 IF R$(1)="4#" THEN R$(1)="F#"
- 1410 IF R$(1)="5#" THEN R$(1)="C#"
- 1420 IF R$(1)="6#" THEN R$(1)="G#"
- 1430 IF R$(1)="7#" THEN R$(1)="D#"
- 1440 IF R$(1)="1b" THEN R$(1)="G "
- 1450 IF R$(1)="2b" THEN R$(1)="C "
- 1460 IF R$(1)="3b" THEN R$(1)="F "
- 1470 IF R$(1)="4b" THEN R$(1)="Bb"
- 1480 IF R$(1)="5b" THEN R$(1)="Eb"
- 1490 IF R$(1)="6b" THEN R$(1)="Ab"
- 1500 IF R$(1)="7b" THEN R$(1)="Db"
- 1510 PRINT: PRINT "Dorian Mode on ";R$(1)
- 1520 IF R$(1)="A#" THEN A$=D$: GOTO 1590
- 1530 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1590
- 1540 IF Q$="#" THEN A$=B$: GOTO 1590
- 1550 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=I$: GOTO 1590
- 1560 IF R$(1)="Gb" THEN A$=J$: GOTO 1590
- 1570 IF R$(1)="Ab" OR R$(1)="Bb" OR R$(1)="Db" OR R$(1)="Eb" THEN A$=H$: GOTO 1590
- 1580 IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
- 1590 GOSUB 520
- 1600 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
- 1610 GOTO 3190
- 1620 IF R$(1)="0 " THEN R$(1)="E ":
- 1630 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="B "
- 1640 IF R$(1)="2#" THEN R$(1)="F#"
- 1650 IF R$(1)="3#" THEN R$(1)="C#"
- 1660 IF R$(1)="4#" THEN R$(1)="G#"
- 1670 IF R$(1)="5#" THEN R$(1)="D#"
- 1680 IF R$(1)="6#" THEN R$(1)="A#"
- 1690 IF R$(1)="7#" THEN R$(1)="E#"
- 1700 IF R$(1)="1b" THEN R$(1)="A "
- 1710 IF R$(1)="2b" THEN R$(1)="D "
- 1720 IF R$(1)="3b" THEN R$(1)="G "
- 1730 IF R$(1)="4b" THEN R$(1)="C "
- 1740 IF R$(1)="5b" THEN R$(1)="F "
- 1750 IF R$(1)="6b" THEN R$(1)="Bb"
- 1760 IF R$(1)="7b" THEN R$(1)="Eb"
- 1770 PRINT: PRINT "Phrygian Mode on ";R$(1)
- 1780 IF R$(1)="B#" THEN A$=D$: GOTO 1840
- 1790 IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="F#" OR R$(1)="G#" THEN A$=B$: GOTO 1840
- 1800 IF R$(1)="Bb" OR R$(1)="Eb" THEN A$=H$: GOTO 1840
- 1810 IF R$(1)="Ab" THEN A$=J$: GOTO 1840
- 1820 IF R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1840
- 1830 IF R$(1)="A " OR R$(1)="C " OR R$(1)="D " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
- 1840 GOSUB 520
- 1850 I(1)=1: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
- 1860 GOTO 3190
- 1870 IF R$(1)="0 " THEN R$(1)="F ":
- 1880 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="C "
- 1890 IF R$(1)="2#" THEN R$(1)="G "
- 1900 IF R$(1)="3#" THEN R$(1)="D "
- 1910 IF R$(1)="4#" THEN R$(1)="A "
- 1920 IF R$(1)="5#" THEN R$(1)="E "
- 1930 IF R$(1)="6#" THEN R$(1)="B "
- 1940 IF R$(1)="7#" THEN R$(1)="F#"
- 1950 IF R$(1)="1b" THEN R$(1)="Bb"
- 1960 IF R$(1)="2b" THEN R$(1)="Eb"
- 1970 IF R$(1)="3b" THEN R$(1)="Ab"
- 1980 IF R$(1)="4b" THEN R$(1)="Db"
- 1990 IF R$(1)="5b" THEN R$(1)="Gb"
- 2000 IF R$(1)="6b" THEN R$(1)="Cb"
- 2010 IF R$(1)="7b" THEN R$(1)="Fb"
- 2020 PRINT: PRINT "Lydian Mode on ";R$(1)
- 2030 IF R$(1)="C#" THEN A$=D$: GOTO 2080
- 2040 IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2080
- 2050 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 2080
- 2060 IF R$(1)="Bb" OR R$(1)="F " THEN A$=G$: GOTO 2080
- 2070 IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=H$
- 2080 GOSUB 520
- 2090 I(1)=2: I(2)=4: I(3)=6: I(4)=7: I(5)=9: I(6)=11: I(7)=12
- 2100 GOTO 3190
- 2110 IF R$(1)="0 " THEN R$(1)="G "
- 2120 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="D "
- 2130 IF R$(1)="2#" THEN R$(1)="A "
- 2140 IF R$(1)="3#" THEN R$(1)="E "
- 2150 IF R$(1)="4#" THEN R$(1)="B "
- 2160 IF R$(1)="5#" THEN R$(1)="F#"
- 2170 IF R$(1)="6#" THEN R$(1)="C#"
- 2180 IF R$(1)="7#" THEN R$(1)="G#"
- 2190 IF R$(1)="1b" THEN R$(1)="C "
- 2200 IF R$(1)="2b" THEN R$(1)="F "
- 2210 IF R$(1)="3b" THEN R$(1)="Bb"
- 2220 IF R$(1)="4b" THEN R$(1)="Eb"
- 2230 IF R$(1)="5b" THEN R$(1)="Ab"
- 2240 IF R$(1)="6b" THEN R$(1)="Db"
- 2250 IF R$(1)="7b" THEN R$(1)="Gb"
- 2260 PRINT: PRINT "Mixolydian Mode on ";R$(1)
- 2270 IF R$(1)="D#" THEN A$=D$: GOTO 2340
- 2280 IF R$(1)="C#" OR R$(1)="G#" THEN A$=B$: GOTO 2340
- 2290 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 2340
- 2300 IF R$(1)="Fb" THEN A$=I$: GOTO 2340
- 2310 IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$
- 2320 IF R$(1)="Cb" THEN A$=J$: GOTO 2340
- 2330 IF R$(1)="Ab" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Gb" THEN A$=H$
- 2340 GOSUB 520
- 2350 I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
- 2360 GOTO 3190
- 2370 IF R$(1)="0 " THEN R$(1)="B "
- 2380 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="F#"
- 2390 IF R$(1)="2#" THEN R$(1)="C#"
- 2400 IF R$(1)="3#" THEN R$(1)="G#"
- 2410 IF R$(1)="4#" THEN R$(1)="D#"
- 2420 IF R$(1)="5#" THEN R$(1)="A#"
- 2430 IF R$(1)="6#" THEN R$(1)="E#"
- 2440 IF R$(1)="7#" THEN R$(1)="B#"
- 2450 IF R$(1)="1b" THEN R$(1)="E "
- 2460 IF R$(1)="2b" THEN R$(1)="A "
- 2470 IF R$(1)="3b" THEN R$(1)="D "
- 2480 IF R$(1)="4b" THEN R$(1)="G "
- 2490 IF R$(1)="5b" THEN R$(1)="C "
- 2500 IF R$(1)="6b" THEN R$(1)="F "
- 2510 IF R$(1)="7b" THEN R$(1)="Bb"
- 2520 PRINT: PRINT "Locrian Mode on ";R$(1)
- 2530 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=B$: GOTO 2580
- 2540 IF R$(1)="Bb" OR R$(1)="F " THEN A$=H$: GOTO 2580
- 2550 IF R$(1)="A " OR R$(1)="B " OR R$(1)="C " OR R$(1)="D " OR R$(1)="E " OR R$(1)="G " THEN A$=G$: GOTO 2580
- 2560 IF R$(1)="Eb" THEN A$=J$: GOTO 2580
- 2570 IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$
- 2580 GOSUB 520
- 2590 I(1)=1: I(2)=3: I(3)=5: I(4)=6: I(5)=8: I(6)=10: I(7)=12
- 2600 GOTO 3190
- 2610 PRINT: PRINT "Hungarian (Gypsy) Minor on ";R$(1)
- 2620 IF R$(1)="C#" THEN A$=E$: GOTO 2740
- 2630 IF R$(1)="C " THEN A$=M$: GOTO 2740
- 2640 IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 2740
- 2650 IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 2740
- 2660 IF R$(1)="B#" THEN A$=C$: GOTO 2740
- 2670 IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 2740
- 2680 IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2740
- 2690 IF R$(1)="Ab" OR R$(1)="Eb" THEN A$=H$: GOTO 2740
- 2700 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 2740
- 2710 IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$: GOTO 2740
- 2720 IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 2740
- 2730 IF Q$="b" THEN D$=G$
- 2740 GOSUB 520
- 2750 I(1)=2: I(2)=3: I(3)=6: I(4)=7: I(5)=8: I(6)=11: I(7)=12
- 2760 GOTO 3190
- 2770 PRINT: PRINT "Whole Tone Scale on ";R$(1)
- 2780 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2800
- 2790 IF Q$="b" THEN A$=H$
- 2800 GOSUB 520
- 2810 N=6: I(1)=2: I(2)=4: I(3)=6: I(4)=8: I(5)=10: I(6)=12
- 2820 GOTO 3190
- 2830 PRINT: PRINT "Chromatic Scale on ";R$(1)
- 2840 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2870
- 2850 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=H$: GOTO 2870
- 2860 IF Q$="b" THEN A$=G$
- 2870 GOSUB 520
- 2880 N=12: I(1)=1: I(2)=2: I(3)=3: I(4)=4: I(5)=5: I(6)=6: I(7)=7: I(8)=8: I(9)=9: I(10)=10: I(11)=11: I(12)=12
- 2890 GOTO 3190
- 2900 PRINT: PRINT "First Pentatonic Scale on ";R$(1)
- 2910 IF R$(1)="B#" OR R$(1)="E#" OR R$(1)="F#" THEN A$=B$: GOTO 2930
- 2920 IF Q$="b" THEN A$=H$
- 2930 GOSUB 520
- 2940 N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=9: I(5)=12
- 2950 GOTO 3190
- 2960 PRINT: PRINT "Second Pentatonic Scale on ";R$(1)
- 2970 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2990
- 2980 IF Q$="b" THEN A$=H$
- 2990 GOSUB 520
- 3000 N=5: I(1)=3: I(2)=5: I(3)=7: I(4)=10: I(5)=12
- 3010 GOTO 3190
- 3020 PRINT: PRINT "Third Pentatonic Scale on ";R$(1)
- 3030 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3050
- 3040 IF Q$="b" THEN A$=H$
- 3050 GOSUB 520
- 3060 N=5: I(1)=2: I(2)=4: I(3)=7: I(4)=9: I(5)=12
- 3070 GOTO 3190
- 3080 PRINT: PRINT "Fourth Pentatonic Scale on ";R$(1)
- 3090 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3110
- 3100 IF Q$="b" THEN A$=H$
- 3110 GOSUB 520
- 3120 N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=10: I(5)=12
- 3130 GOTO 3190
- 3140 PRINT: PRINT "Fifth Pentatonic Scale on ";R$(1)
- 3150 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3170
- 3160 IF Q$="b" THEN A$=H$
- 3170 GOSUB 520
- 3180 N=5: I(1)=3: I(2)=5: I(3)=8: I(4)=10: I(5)=12
- 3190 FOR X=2 TO N+1
- 3200 R$(X)=MID$(A$,R+(2*I(X-1)),2)
- 3210 NEXT X
- 3220 FOR X=1 TO N+1
- 3230 IF RIGHT$(R$(X),1)="d" THEN R$(X)=LEFT$(R$(X),1)+"bb"
- 3240 IF RIGHT$(R$(X),1)="x" THEN R$(X)=LEFT$(R$(X),1)+"##"
- 3250 IF LEN(R$(X))=2 THEN R$(X)=R$(X)+" "
- 3260 NEXT X
- 3270 PRINT: FOR X=1 TO N+1: PRINT R$(X);" ";
- 3280 NEXT X
- 3290 GOSUB 3330
- 3300 FOR X=1 TO N+1: PLAY "MBL4N"+STR$(A(X))
- 3310 NEXT X
- 3320 PRINT: GOTO 210
- 3330 FOR J=1 TO N+1
- 3340 IF R$(J)="Dbb" OR R$(J)="C " OR R$(J)="B# " THEN A(J)=25: GOTO 3460
- 3350 IF R$(J)="Db " OR R$(J)="C# " OR R$(J)="B##" THEN A(J)=26: GOTO 3460
- 3360 IF R$(J)="Ebb" OR R$(J)="D " OR R$(J)="C##" THEN A(J)=27: GOTO 3460
- 3370 IF R$(J)="Fbb" OR R$(J)="Eb " OR R$(J)="D# " THEN A(J)=28: GOTO 3460
- 3380 IF R$(J)="Fb " OR R$(J)="E " OR R$(J)="D##" THEN A(J)=29: GOTO 3460
- 3390 IF R$(J)="Gbb" OR R$(J)="F " OR R$(J)="E# " THEN A(J)=30: GOTO 3460
- 3400 IF R$(J)="Gb " OR R$(J)="F# " OR R$(J)="E##" THEN A(J)=31: GOTO 3460
- 3410 IF R$(J)="Abb" OR R$(J)="G " OR R$(J)="F##" THEN A(J)=32: GOTO 3460
- 3420 IF R$(J)="Ab " OR R$(J)="G# " THEN A(J)=33: GOTO 3460
- 3430 IF R$(J)="Bbb" OR R$(J)="A " OR R$(J)="G##" THEN A(J)=34: GOTO 3460
- 3440 IF R$(J)="Cbb" OR R$(J)="Bb " OR R$(J)="A# " THEN A(J)=35: GOTO 3460
- 3450 IF R$(J)="Cb " OR R$(J)="B " OR R$(J)="A##" THEN A(J)=36
- 3460 NEXT J
- 3470 FOR J=1 TO N+1
- 3480 IF A(J)<A(J-1) THEN A(J)=A(J)+12
- 3490 NEXT J
- 3500 RETURN
- 3510 DEF SEG = &H40 : POKE &H17, PEEK (&H17) OR 96
- 3520 RUN "MUSICBOX
-